// 定义一个打招呼函数,接收名字参数,返回 "hello xxx" 格式的字符串
const hello = name => {
  return `hello ${name}`
}

// 定义一个快乐函数,接收名字参数,返回 "xxx :" 格式的字符串
const happy = name => {
  return `${name} :`
}

// compose 函数用于组合两个函数
// 参数 f 和 g 都是函数
// 返回一个新函数,该函数先执行 g,再用 g 的结果作为参数执行 f
const compose = (f, g) => {
  return function (x) {
    return f(g(x))
  }
}

// 使用 compose 组合 hello 和 happy 函数
// happyHello 函数会先执行 happy('zhangsan') 得到 "zhangsan :"
// 然后将结果传给 hello 函数,最终得到 "hello zhangsan :"
const happyHello = compose(hello, happy)

// 测试输出
console.log(happyHello('zhangsan')) // 输出: hello zhangsan :
